-
Notifications
You must be signed in to change notification settings - Fork 160
Picolibc cplusplus #620
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Picolibc cplusplus #620
Conversation
Indicate to the build system that Zephyr SDK has full support for Picolibc. Signed-off-by: Torsten Rasmussen <[email protected]>
Zephyr SDK now supports Picolibc as built-in for both C and C++ development. Signed-off-by: Torsten Rasmussen <[email protected]>
|
||
config PICOLIBC_SUPPORTED | ||
def_bool y | ||
depends on "$(ZEPHYR_TOOLCHAIN_VARIANT)" = "zephyr" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What effect would this have on other toolchains? For instance, you can add picolibc support to the arm embedded toolkit by downloading the picolibc overlay, you can build native a crosstool-ng toolchain which can have picolibc support included, or you could be using the native Debian arm-none-eabi toolchain, which has picolibc support.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What effect would this have on other toolchains?
None.
This only sets the setting to y
when Zephyr SDK is used.
When another toolchain is used, then the setting inside the Zephyr repo is used.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
oh. How does this detect whether the user is building the picolibc module? Because you could be using the zephyr toolchain but not using the picolibc bits it provides, and that wouldn't work for C++.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This doesn't allow Zephyr to restrict picolibc usage for boards that don't work, even if picolibc works for the target architecture (like qemu_x86_tiny). Perhaps this should use a new variable, TOOLCHAIN_PICOLIBC_SUPPORTED
, and that variable could be used in the computation of PICOLIBC_SUPPORTED
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This doesn't allow Zephyr to restrict picolibc usage for boards that don't work, even if picolibc works for the target architecture (like qemu_x86_tiny).
Correct, so if we do have such boards then we need to consider how to handle them.
What is the reason that a given board would impact the use of picolibc ?
Especially as from your description, the architecture itself is supported.
(and is it really the board, and not the SoC which are restricting picolibc ?)
Do you have some concrete examples ?
Probably this is something which should be handle directly at the board, and the board Kconfig in fact has a possibility to default the TOOLCHAIN_PICOLIBC_SUPPORTED
to n
if this is needed.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yup, I think we've got this sorted out.
Will merge this for now; though, it will likely soon be completely reworked. |
Add
TOOLCHAIN_HAS_PICOLIBC
as CMake variable now that Zephyr SDK has full support for picolibc, including C++.This follows the principle used for
TOOLCHAIN_HAS_NEWLIB
.Set
PICOLIBC_SUPPORTED
when using Zephyr SDK, as Picolibc is now always supported with this Zephyr SDK, including C++ development.This PR is based on comments given in: zephyrproject-rtos/zephyr#53338
DNM
until feedback is given by @keith-packard